Appends multiple boxes to a JPEG 2000 data stream. This method is available in the Document/Medical Toolkits.
stream
A System.IO.Stream containing the JPEG 2000 file data.
boxes
A list of Jpeg2000MultiBox objects containing the box data being appended.
T
According to the JPEG 2000 standard a ResolutionBox cannot be appended to a file. Set it using the SetBox method. Attempting to append a ResolutionBox will cause an invalid parameter exception to be thrown.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Jpeg2000;
public void SaveCompositeStringExample(byte[] xmlData)
{
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
// Load a JPEG 2000 image
Jpeg2000Engine engine = new Jpeg2000Engine();
List<CompositeJpxImages> images = engine.LoadComposite(codecs, Path.Combine(LEAD_VARS.ImagesDir, "image1.jpx"), 0, CodecsLoadByteOrder.BgrOrGray);
engine.ResetEngineBoxes();
GtsoBox gtsoBox = (GtsoBox)(engine.ReadBox(Path.Combine(LEAD_VARS.ImagesDir, "image1.jpx"), Jpeg2000BoxType.GtsoBox, 0));
engine.SetBox(Jpeg2000FileFormat.LeadJpx, gtsoBox);
//Save the image in JPX file format
engine.SaveComposite(codecs, Path.Combine(LEAD_VARS.ImagesDir, "Test.jpx"), images, Jpeg2000FileFormat.LeadJpx, 24, 5);
//Append an XML box
XmlBox xmlBox = new XmlBox();
xmlBox.Data = xmlData;
List<XmlBox> xmlBoxes = new List<XmlBox>();
xmlBoxes.Add(xmlBox);
engine.AppendBoxes(Path.Combine(LEAD_VARS.ImagesDir, "Test.jpx"), xmlBoxes);
// Clean up
foreach (CompositeJpxImages image in images)
{
image.ColorImage.Dispose();
image.OpacityImage.Dispose();
image.PreOpacityImage.Dispose();
}
codecs.Dispose();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}